package com.sicau.dao;

import com.sicau.entity.dto.*;
import com.sicau.entity.pojo.po.ComposerPO;
import com.sicau.entity.pojo.vo.ResultVO;

import java.util.List;

/**
 * 管理员系统的dao层
 * @author ttxxi
 */
public interface ManagerMapper {

    /**
     * 管理员登录验证
     * @param manager
     * @return
     */
    Manager queryLogin(Manager manager);

    /**
     * 管理员获取所有任务信息
     * @return 所有任务信息的list
     */
    List<TaskInfo> getAllTask();

    /**
     * 管理员根据用户id查询信息
     * @param id 用户id
     * @return 查到的用户信息
     */
    PersonalInfo selectPersonalInfoById(String id);

    /**
     * 添加任务
     * @param taskInfo 任务对象
     */
    void addTask(TaskInfo taskInfo);


    /**
     * 批量添加任务
     * @param taskInfos 任务对象
     */
    void addTasks(List<TaskInfo> taskInfos);

    /**
     * 根据id删除task
     * @param id taskid
     */
    void deleteTaskById(String id);

    /**
     * 修改任务
     * @param taskInfo
     */

    void modifyTask(TaskInfo taskInfo);

    /**
     * 根据id选择task
     * @param id
     */
    TaskInfo selectTaskById(String id);

    /**
     * 更改公告
     * @param notice
     */
    void modifyNotice(Notice notice);

    /**
     * 获取所有的notice
     * @return
     */
    List<Notice> getAllNotice();

    /**
     * 获取所有的用户账户信息
     * @return
     */
    List<Composer> getAllComposer();

    /**
     * 根据id查询用户信息
     * @param id
     * @return
     */
    Composer selcetComposerById(String id);

    /**
     * 根据id选择管理员
     * @param id
     * @return
     */
    Manager selectManagerById(String id);

    /**
     * 创建新用户
     * @param composerPO
     */
    void addComposer(ComposerPO composerPO);

    /**
     * 添加信息到personalInfo
     * @param composerPO
     */
    void addPersonalInfo(ComposerPO composerPO);

    /**
     * 修改composer
     * @param composerPO
     */
    void updateComposer(ComposerPO composerPO);

    /**
     * 修改personalInfo
     * @param composerPO
     */
    void updatePersonalInfo(ComposerPO composerPO);

    /**
     * 修改composer密码
     * @param composer
     */
    void changeComposerPassword(Composer composer);

    /**
     * 修改composer的状态
     * @param composer
     */
    void changeComposerStatus(Composer composer);

    /**
     * 每一步修改用户的操作都更新一下时间
     * @param updateTime
     */
    void setUpdateTime(UpdateTime updateTime);

    /**
     * 新增一个数据在updatetime表里面
     * @param updateTime
     */
    void addUpdateTime(UpdateTime updateTime);

    /**
     * 根据用户id获取更新时间
     * @param composerId
     * @return
     */
    String selectUpdateTime(String composerId);


}
